Avoid infloop in 'ispell-region'
authorEli Zaretskii <eliz@gnu.org>
Sat, 7 Jan 2017 11:02:50 +0000 (13:02 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 7 Jan 2017 11:02:50 +0000 (13:02 +0200)
* lisp/textmodes/ispell.el (ispell-begin-skip-region-regexp):
Protect against 'ispell-skip-region-alist' being nil.  Reported by
Ernest AdroguĂ© <nfdisco@gmail.com>, see
http://lists.gnu.org/archive/html/help-gnu-emacs/2017-01/msg00007.html.

lisp/textmodes/ispell.el

index 27ee5d372fd080d0a5ecb84d60b324fd683e533c..9747bd6cc12a816ec52b80ae04a777eb9fe791ae 100644 (file)
@@ -3133,7 +3133,14 @@ Must be called after `ispell-buffer-local-parsing' due to dependence on mode."
               (if (string= "" comment-end) "^" (regexp-quote comment-end)))
           (if (and (null ispell-check-comments) comment-start)
               (regexp-quote comment-start))
-          (ispell-begin-skip-region ispell-skip-region-alist)
+          ;; If they set ispell-skip-region-alist to nil, mapconcat
+          ;; will produce an empty string, which will then match
+          ;; anything without moving point, something
+          ;; ispell-skip-region doesn't expect.  Perhaps we should be
+          ;; more defensive and delq "" above as well, in addition to
+          ;; deleting nil elements.
+          (if ispell-skip-region-alist
+              (ispell-begin-skip-region ispell-skip-region-alist))
           (ispell--make-filename-or-URL-re)))
    "\\|"))